home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr50 / pbc22b.zip / PBC$BAS.ZIP / CREDCARD.BAS < prev    next >
BASIC Source File  |  1993-03-30  |  2KB  |  55 lines

  1. '   +----------------------------------------------------------------------+
  2. '   |                                                                      |
  3. '   |        PBClone  Copyright (c) 1990-1993  Thomas G. Hanlin III        |
  4. '   |                                                                      |
  5. '   +----------------------------------------------------------------------+
  6.  
  7.  
  8.  
  9. DECLARE FUNCTION AscM% (St$, BYVAL Posn%)
  10. DECLARE SUB Reverse (St$)
  11.  
  12.  
  13.  
  14. FUNCTION CreditCard$ (CardNumber$)
  15.  
  16.    Result$ = ""
  17.  
  18.    ' -- Clean up card number: remove non-numeric characters
  19.    CardNr$ = ""
  20.    FOR tmp% = 1 TO LEN(CardNumber$)
  21.       ch% = AscM(CardNumber$, tmp%) - 48
  22.       IF ch% >= 0 AND ch% <= 9 THEN
  23.          CardNr$ = CardNr$ + CHR$(ch%)
  24.       END IF
  25.    NEXT
  26.  
  27.    ' -- Evaluate card type and check for appropriate number of digits
  28.    CardType% = AscM(CardNr$, 1)
  29.    IF CardType% >= 0 THEN
  30.       IF LEN(CardNr$) >= AscM("<<<KIIL<<K", CardType% + 1) - 60 THEN
  31.          IF LEN(CardNr$) <= AscM("<<<KLLL<<L", CardType% + 1) - 60 THEN
  32.             Result$ = LTRIM$(MID$("            AMEXVISAMCARDISC        DINE", CardType% * 4 + 1, 4))
  33.             Check% = AscM(CardNr$, LEN(CardNr$))
  34.             CardNr$ = LEFT$(CardNr$, LEN(CardNr$) - 1)
  35.             Reverse CardNr$
  36.          END IF
  37.       END IF
  38.    END IF
  39.  
  40.    ' -- See if digits form a valid card number
  41.    IF LEN(Result$) THEN
  42.       total% = 0
  43.       FOR tmp% = 1 TO LEN(CardNr$)
  44.          total% = total% + (AscM("01234567890246813579", AscM(CardNr$, tmp%) + (tmp% AND 1) * 10 + 1) - 48)
  45.       NEXT
  46.       total% = (10 - total% MOD 10) MOD 10
  47.       IF total% <> check% THEN
  48.          Result$ = ""
  49.       END IF
  50.    END IF
  51.  
  52.    CreditCard$ = Result$
  53.  
  54. END FUNCTION
  55.